閒聊
昨天試著用Selenium和cookies做了不用登錄就可以進到Instagram裡,今天要來試著對貼文自動點讚。
預期
透過Selenium的功能,鎖定想點擊的貼文元素,並進行自動按讚動作。
實作
這邊會先需要選擇一個好友的帳號來爬取,這邊使用的是我自己的另一個帳號。
https://www.instagram.com/teresa.food.life/
程式碼的部分,可以沿用昨天的,只需要將請求的網址改成我們今天要爬取的這個帳號的網址就好了。
from selenium import webdriver
from time import sleep
import json
if _name_ == '_mian_' :
with open('cookies_jar.json') as f :
cookies = json.load(f)
driver = webdriver.Chrome()
driver.get('https://www.instagram.com/teresa.food.life/')
for cookie in cookies :
driver.add_cookie(cookie)
driver.get('https://www.instagram.com/teresa.food.life/')
接下來可以用檢查工具查看貼文的架構,可以看到每3篇文章為一個單位,這個單位的class是 _ac7v aang_
。
也可以看到1篇貼文下還有3個單位,且class是 _aagw
。
確認完上面的事情之後,就可以來鎖定元素了。
from selenium import webdriver
from time import sleep
import json
if __name__ == '__main__':
with open('cookies_jar.json') as f:
cookies = json.load(f)
driver = webdriver.Chrome()
driver.get('https://www.instagram.com/teresa.food.life/')
for cookie in cookies:
driver.add_cookie(cookie)
driver.get('https://www.instagram.com/teresa.food.life/')
sleep(2)
# 鎖定此帳號貼文的 class name
eles = driver.find_elements_by_class_name('_aagw')
print(eles)
print(len(eles))
鎖定完元素後,就可以來寫for-loop讓他重複執行。
from selenium import webdriver
from time import sleep
import json
if __name__ == '__main__':
with open('cookies_jar.json') as f:
cookies = json.load(f)
driver = webdriver.Chrome()
driver.get('https://www.instagram.com/teresa.food.life/')
for cookie in cookies:
driver.add_cookie(cookie)
driver.get('https://www.instagram.com/teresa.food.life/')
sleep(2)
# 鎖定此帳號貼文的 class name
eles = driver.find_elements_by_class_name('_aagw')
for ele in eles :
ele.click()
break #因為還沒有寫入點擊功能,先break
再來我們可以用檢查工具查看點讚功能的class是 _ab6-
,在語法中一樣是用click來點擊。
from selenium import webdriver
from time import sleep
import json
if __name__ == '__main__':
with open('cookies_jar.json') as f:
cookies = json.load(f)
driver = webdriver.Chrome()
driver.get('https://www.instagram.com/teresa.food.life/')
for cookie in cookies:
driver.add_cookie(cookie)
driver.get('https://www.instagram.com/teresa.food.life/')
sleep(2)
# 鎖定此帳號貼文的 class name
eles = driver.find_elements_by_class_name('_aagw')
for ele in eles :
ele.click()
sleep(1)
driver.find_element_by_class_name('_ab6-').click
break
最後我們使用Xpath定位,來掉break讓程式進行就可以了!
from selenium import webdriver
from time import sleep
import json
if __name__ == '__main__':
with open('cookies_jar.json') as f:
cookies = json.load(f)
driver = webdriver.Chrome()
driver.get('https://www.instagram.com/teresa.food.life/')
for cookie in cookies:
driver.add_cookie(cookie)
driver.get('https://www.instagram.com/teresa.food.life/')
sleep(2)
# 鎖定此帳號貼文的 class name
eles = driver.find_elements_by_class_name('_aagw')
for ele in eles :
ele.click()
sleep(1)
driver.find_element_by_class_name('_ab6-').click()
sleep(1)
driver.find_element_by_xpath('/html/body/div[6]/div[3]/button').click()
結語
今天嘗試了對貼文點讚的功能,覺得很新奇,原來還可以這麼做!
明天我們要進到Discord裡面試著自動留言。
明天!
【Day 25】想在Discord自動留言嗎?
參考資料
Instagram帳號 :https://www.instagram.com/teresa.food.life/